#include <iostream>
#include <vector>
#include <map>
#include <algorithm>

using namespace std;

//class Solution {
//public:
//    vector<string> topKFrequent(vector<string>& words, int k) {
//        map<string, int> count;
//        for (auto str : words)
//        {
//            count[str]++;
//        }
//
//        // sort(count.begin(), count.end());
//        vector<string> ans;
//        while (k--)
//        {
//            std::map<string, int>::iterator it = count.begin();
//            string max_str(it->first);
//            while (it != count.end())
//            {
//                if (count[max_str] < count[it->first])
//                {
//                    max_str = it->first;
//                }
//                ++it;
//            }
//            ans.push_back(max_str);
//            count.erase(max_str);
//        }
//        return ans;
//    }
//};

//int main()
//{
//    vector<string> words({ "i", "love", "leetcode", "i", "love", "coding" });
//    Solution().topKFrequent(words, 2);
//
//    return 0;
//}

/////////////////////////////////////////////////////

#include <iostream>
#include <vector>
#include <string>
#include <map>

using namespace std;
int main()
{
    vector<string> words;
    string tmp;
    while (cin >> tmp)
    {
        std::string::iterator it = tmp.begin();
        while (it != tmp.end())
        {
            if (*it >= 'A' && *it <= 'Z')
            {
                *it = *it - 'A' + 'a';
            }

            if ((*it < 'A' || *it > 'Z') && (*it < 'a' || *it > 'z'))
            {
                it = tmp.erase(it);
            }
            else
            {
                ++it;
            }
        }
        words.push_back(tmp);
    }

    map<string, int> ret;
    for (auto str : words)
    {
        ret[str]++;
    }

    for (auto val : ret)
    {
        cout << val.first << ":" << val.second << endl;
    }

    return 0;
}